<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>二分算法主要针对一组<b style="color:red">有序的数据</b>进行排序</h1>
    <h2>请查看 console.log</h2>
    <h2>步骤：</h2>
    <ul>
        <li>（1）首先，从有序数组的中间的元素开始搜索，如果该元素正好是目标元素（即要查找的元素），则搜索过程结束，否则进行下一步。 </li>
        <li>（2）如果目标元素大于或者小于中间元素，则在数组大于或小于中间元素的那一半区域查找，然后重复第一步的操作。 </li>
        <li>（3）如果某一步数组为空，则表示找不到目标元素。</li>
    </ul>
    <script>
        
        function binarySearch(arr, key) {
            var low = 0;
            var high = arr.length - 1;
            var mid = Math.floor(high / 2);
            
            while (low <= high) {
                if (key === arr[mid]) {
                    return mid;
                }
                else if (key < arr[mid]) {
                    high = --mid;
                }
                else if (key > arr[mid]) {
                    low = ++mid;
                }
                else {
                    return -1;
                }
            }
            
        }
        
        let arr = [1,2,3,4,5,6,7,8,9];
        let res = binarySearch(arr, 5);
        console.log(res) // 1


    </script>
</body>
</html>